import { mapActions, mapMutations, mapState } from 'vuex'
export default {
  props: {
    type: {
      type: String,
      default: ''
    }
  },
  data() {
    return {}
  },
  computed: {
    ...mapState('base', ['provinces', 'citys', 'countys'])
  },
  created() {
    this.RESET_AREA_SELECT(['provinces', 'citys', 'countys'])
    this.getAreaConfig()
  },
  methods: {
    ...mapActions('base', ['getAreaSelect']),
    ...mapMutations('base', ['RESET_AREA_SELECT']),
    // 重置选中的省市县
    resetAreaValue(keys) {
      keys.map(item => {
        for (const key in this.formData) {
          if (item === key) {
            this.formData[key] = ''
          }
        }
      })
    },
    // 筛选省市县数据
    filterArea(data) {
      const list = data.map(item => {
        return {
          label: item.areaName,
          value: item.id
        }
      })
      return list
    },
    // 加载省市县的slectList
    getAreaConfig(data = { parentId: 100000, key: 'provinces' }) {
      this.getAreaSelect(data)
    },
    // 监听省份改变
    provinceChange(parentId) {
      if (parentId) {
        this.getAreaConfig({ parentId, key: 'citys' })
      }
      this.resetAreaValue(['cityId', 'countyId'])
      this.RESET_AREA_SELECT(['citys', 'countys'])
    },
    // 监听市改变
    cityChange(parentId) {
      if (parentId) {
        this.getAreaConfig({ parentId, key: 'countys' })
      }
      this.resetAreaValue(['countyId'])
      this.RESET_AREA_SELECT(['countys'])
    },
    // 监听区县改变
    countyChange(parentId) {
      if (!parentId) {
        this.resetAreaValue(['countyId'])
      }
    },
    // 详情回显
    showBackData({ provinceId, cityId }) {
      if (this.type !== 'update') return
      if (provinceId) {
        this.getAreaConfig({ parentId: provinceId, key: 'citys' })
      }
      if (cityId) {
        this.getAreaConfig({ parentId: cityId, key: 'countys' })
      }
    }
  }
}
